A computer network includes computer processors or “hosts” that host software applications that provide or request services, or both. The hosts may be network terminals or end stations that do not perform network traffic routing or forwarding functions. The hosts communicate with each other through network devices, such as switches and routers, sometimes called intermediate devices, which do perform routing and forwarding functions. When a host is added to a network by connecting directly to another host, or indirectly to another host through one or more intermediate devices, the host must be configured for network operations. For example, the newly added host is assigned a logical network address for itself, and a network address for the intermediate device that routes or forwards its traffic, among other configuration information.
Computer networks that employ the Transmission Control Protocol and Internet Protocol (TCP/IP) for sending packets of information between devices on the network are proliferating, and, as a result, logical network addresses that are used to locate each device on the network have become scarce. Further, in many local networks with many different computers, the number and location of the computers connected to the network may change regularly. In addition, of the many computers physically connected at one time, only a fraction of the computers are on and operating at one time. Thus one or more hosts are being added and dropped frequently.
A specific context in which this problem arises involves large-scale cable modem networks in which voice and other services are delivered over an Internet Protocol network that uses coaxial cable for communications. Addresses are dynamically assigned to cable modems of end users as the users subscribe to and terminate use of service, and to devices that cannot persistently store an address. In this context, it is wasteful to give every device a unique and permanent network address. A number of addresses sufficient for the total anticipated subscriber base can be shared; but configuring each host with a new address is a tedious process to perform manually.
The Dynamic Host Configuration Protocol (DHCP) provides a mechanism through which computers using TCP/IP can obtain network addresses and other configuration information automatically. DHCP is an open standard protocol for dynamic host configuration described in request for comments (RFC) documents numbered 2131 and 2132 available at the time of this writing as files rfc2131.txt and rfc2132.txt, respectively, on the worldwide web (www) at domain and directory ietf.org/rfc. A DHCP server process operates on a DHCP server host that is conveniently located for several hosts on one or more local networks. One or more DHCP server hosts and processes are set up by a system administrator with information to configure the hosts on one or more local networks to reflect the current architecture of those local networks. A DHCP client process operates on each host of the local networks. As used hereinafter, a server refers to the server process and a client refers to the client process unless otherwise indicated to refer to the host or device on which the process executes.
When a host begins operations on the local network, the DHCP client on that host requests configuration information from one of the DHCP servers. In response to the request from the DHCP client, one or more of the DHCP servers respond with configuration information to be used by the host of the DHCP client for a pre-determined period of time (“lease time”), including an IP address for the host of the DHCP client. Each DHCP server maintains a pool of available IP addresses and a data structure where IP addresses already leased are stored. The responses from the DHCP servers take the form of “offers” of data. In a subsequent message, the DHCP client notifies the servers that one of the offers is accepted. The host that is executing the DHCP client then uses the configuration information including the address. The configuration information is bound to the particular DHCP client, and the binding is recorded by the DHCP server that offered it by storing data indicating the binding in the data structure of leased IP addresses. In other DHCP messages, the DHCP client renews the leased IP address; a client may use Address Resolution Protocol (ARP) or an equivalent to check that a particular IP address is not in use by other hosts.
DHCP servers and clients have greatly simplified the task of configuring hosts that join a network. One set of one or more DHCP servers can be configured to provide network addresses for several networks.
Sometimes it is desirable to use a set of DHCP servers to assign IP addresses for several networks using overlapping IP addresses. Multiple networks are said to use overlapping addresses when the multiple networks use one or more addresses that are the same. For example, it is desirable to use DHCP servers to provide addresses for several virtual private networks. Since the hosts on one virtual private network (VPN) do not communicate directly with hosts in a second VPN, both the first VPN and the second VPN are allowed to use the same IP addresses. In fact, the IP standard reserves a particular range of network addresses for use by private networks, such as VPNs. As another example, a retailer may plan to configure multiple stores, each store with the same arrangement of hosts and IP addresses for those hosts in a local private network. It would be desirable for a corporate network to use one DHCP server to provide IP addresses for the private networks at all the stores.
However, conventional DHCP servers cannot be used if multiple networks have overlapping address spaces. Many DHCP servers use the IP address to compare information in the pool of available addresses and the information in the data structure of leased IP addresses. Furthermore, if several DHCP servers are used in concert, it is typical to allocate a unique set of addresses to the pool of each DHCP server. If allowed to store overlapping addresses, these servers may perform incorrectly. Thus a set of DHCP servers is often not allowed to store pools of addresses that include the same address more than once.
Further, some messages directed to the DHCP client from the DHCP server, after the initial offer, use the leased IP address of the DHCP client as the destination address for the message. The address in the destination for the message is not unique if the same IP address is also used on another network. In this situation intermediate devices cannot guarantee delivery to the correct host and may be unable to deliver the message at all.
Based on the foregoing, there is a clear need for techniques that dynamically assign network addresses for multiple private networks that use overlapping network addresses.